////////////////////////////////////////////////////////////////////////////////

#ifndef _SERVER_GUI_H_
#define _SERVER_GUI_H_

////////////////////////////////////////////////////////////////////////////////

#include "timer.h"
#include "server_engine.h"
#include "server_network.h"
#include "mutex.h"

////////////////////////////////////////////////////////////////////////////////


class ServerGUI
{
////////////////////////////////////////////////////////////////////////////////

public:

////////////////////////////////////////////////////////////////////////////////


    /** Constructor */
    ServerGUI();


    /** Destructor */
    ~ServerGUI();


////////////////////////////////////////////////////////////////////////////////


    /** Start game */
    void Start();


////////////////////////////////////////////////////////////////////////////////

private:    

////////////////////////////////////////////////////////////////////////////////


    /** Processes user input */
    void ProcessEvents();


    /** Server engine */
    ServerEngine m_Engine;


    /** Server network */
    ServerNetwork m_Network;


    /** Packets for sending to clients */
    ServerPackets m_SendQueue;


    /** Packets received from clients */
    ClientPackets m_RecvQueue;


    /** Send collection mutex */
    Mutex m_SendQueueMutex;


    /** Receive collection mutex */
    Mutex m_RecvQueueMutex;


    /** Timer */
    Timer m_FPS;


////////////////////////////////////////////////////////////////////////////////
};


////////////////////////////////////////////////////////////////////////////////

#endif

////////////////////////////////////////////////////////////////////////////////

